package cn.lg.soar.system.api.utils;

import cn.lg.soar.common.util.AssertUtil;
import cn.lg.soar.core.util.SoarSubscriber;
import cn.lg.soar.system.api.enums.TemplateTypeEnum;
import cn.lg.soar.system.api.model.TemplateCache;
import cn.lg.soar.system.api.service.ITemplateApi;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

/**
 * 模板工具
 * @author luguoxiang
 * @date 2025-07-15
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public class TemplateUtils {

    private static ITemplateApi api;
    static {
        SoarSubscriber.subscribeInit(applicationContext -> {
            api = applicationContext.getBean(ITemplateApi.class);
        });
    }

    /**
     * 读取缓存
     * @param id
     * @return
     */
    public static TemplateCache getById(Long id) {
        return api.getById(id);
    }

    /**
     * 读取缓存
     * @param code 编码
     * @return
     */
    public static TemplateCache getByCode(String code) {
        return api.getByCode(code);
    }

    /**
     * 获取内容
     * @param data
     * @return
     */
    public static String getContentAsText(TemplateCache data) {
        return api.getContentAsText(data);
    }

    /**
     * 获取模板内容
     * @param id
     * @return
     */
    public static String getContentAsText(Long id) {
        return api.getContentAsText(id);
    }

    /**
     * 获取模板内容
     * @param code 编码
     * @return
     */
    public static String getContentAsText(String code) {
        return api.getContentAsText(code);
    }

    /**
     * 获取内容
     * @param data
     * @return
     */
    public static InputStream getContentAsFile(TemplateCache data) {
        return api.getContentAsFile(data);
    }

    /**
     * 获取模板内容
     * @param id
     * @return
     */
    public static InputStream getContentAsFile(Long id) {
        return api.getContentAsFile(id);
    }

    /**
     * 获取模板内容
     * @param code 编码
     * @return
     */
    public static InputStream getContentAsFile(String code) {
        return api.getContentAsFile(code);
    }

}
